﻿///***************************************************************
/// 시  스  템 : Updms.Batch
/// 단위시스템 : iPhone
/// 계      층 : Batch
/// 프로그램명 : Updms.Batch.iPhone
/// 파  일  명 : Log.cs
/// 설      명 : 로그파일 생성
///***************************************************************
/// 수정ID 일자       이름     내용
///---------------------------------------------------------------
/// CH001  2012-08-01 송시명   최초 작성
///***************************************************************
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.IO;

namespace Updms.Batch.iPhone
{
	class Log
	{
		private static string LOG_YN = ConfigurationManager.AppSettings.Get("Log.Yn");
		private static string LOG_PATH = ConfigurationManager.AppSettings.Get("Log.Path");

		public Log()
		{	
		}

		#region 로그파일 생성 - sContext
		/// <summary>
		/// 로그파일 생성
		/// </summary>
		/// <param name="errType"></param>
		/// <param name="errStep"></param>
		/// <param name="sContext"></param>
		static public void WriteLogFile(string sContext)
		{
			string today = DateTime.Now.ToShortDateString().Trim().Replace("-", "");
			string sFileName = today + ".txt";
			string sPath = string.Format(LOG_PATH);

			WriteLogFile(sFileName, sPath, "", "", sContext);
		}
		#endregion

		#region 로그파일 생성 - errType, errStep, sContext
		/// <summary>
		/// 로그파일 생성 - errType, errStep, sContext
		/// </summary>
		/// <param name="errType"></param>
		/// <param name="errStep"></param>
		/// <param name="sContext"></param>
		static public void WriteLogFile(string errType, string errStep, string sContext)
		{
			string today = DateTime.Now.ToShortDateString().Trim().Replace("-", "");
			string sFileName = today + ".txt";
			string sPath = string.Format(LOG_PATH);

			WriteLogFile(sFileName, sPath, errType, errStep, sContext);
		}
		#endregion

		#region 로그파일 실제생성
		/// <summary>
		/// 로그파일 실제생성
		/// </summary>
		/// <param name="sFileName"></param>
		/// <param name="sPath"></param>
		/// <param name="errType"></param>
		/// <param name="errStep"></param>
		/// <param name="sContext"></param>
		static public void WriteLogFile(string sFileName, string sPath, string errType, string errStep, string sContext)
		{
			if (LOG_YN.ToUpper() != "Y")
			{
				return;
			}

			StringBuilder sb = null;

			string FileName = sPath + "\\" + sFileName;
			FileStream CreateFileName = null;

			try
			{
				sb = new StringBuilder();
				sb.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
				if (errType.Length > 0)
				{
					sb.Append("\t" + errType);
				}
				if (errStep.Length > 0)
				{
					sb.Append("\t" + errStep + "\r\n");
				}

				sb.Append("\t" + sContext + "\r\n-----------------------\r\n");
				
				if (!Directory.Exists(sPath))
				{
					DirectoryInfo di = Directory.CreateDirectory(sPath);
				}

				if (File.Exists(FileName))
				{
					File.AppendAllText(FileName, sb.ToString());
				}
				else
				{
					//파일 생성
					CreateFileName = new FileStream(FileName, FileMode.CreateNew);
					CreateFileName.Close();
					CreateFileName.Dispose();

					File.AppendAllText(FileName, sb.ToString());
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (sb != null)
				{
					sb = null;
				}
				if (CreateFileName != null)
				{
					CreateFileName.Dispose();
					CreateFileName = null;
				}
			}
		}
		#endregion


	}
}
